/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import Entity.NhanVien;
import Util.DatabaseHandle;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Dark_Knight
 */
public class NhanVienImpl implements NhanVienDAO {

    public boolean add(NhanVien data, int MaQuyen) {
        String sql = "{call sp_NHANVIEN_add(?,?,?,?,?,?,?,?,?)}";
        DatabaseHandle db = new DatabaseHandle(sql, true);
        try {
            db.setOutParameter(1, java.sql.Types.INTEGER);
            db.setParameter(2, data.getHoTenNV());
            db.setParameter(3, data.getTenDangNhap());
            db.setParameter(4, data.getGioiTinh());
            db.setParameter(5, data.getMatKhau());
            db.setParameter(6, data.getDiaChiNV());
            db.setParameter(7, data.getDienThoaiNV());
            db.setParameter(8, data.getEmailNV());
            db.setParameter(9, MaQuyen);
            db.executeStorePro();
            
            data.setMaNhanVien(db.getIntOutValue(1));
            db.closed();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(NhanVienImpl.class.getName()).log(Level.SEVERE, null, ex);
            db.closed();
            return false;
        }
    }

    public boolean delete(int MaNhanVien) {
        String sql = "{call sp_NHANVIEN_delete(?)}";
        DatabaseHandle db = new DatabaseHandle(sql, true);
        try {
            db.setParameter(1, MaNhanVien);
            db.executeStorePro();
            db.closed();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(NhanVienImpl.class.getName()).log(Level.SEVERE, null, ex);
            db.closed();
            return false;
        }
    }

    public boolean edit(NhanVien data, int MaQuyen) {
        String sql = "{call sp_NHANVIEN_edit(?,?,?,?,?,?,?)}";
        DatabaseHandle db = new DatabaseHandle(sql, true);
        try {
            db.setParameter(1, data.getMaNhanVien());
            db.setParameter(2, data.getHoTenNV());            
            db.setParameter(3, data.getGioiTinh());            
            db.setParameter(4, data.getDiaChiNV());
            db.setParameter(5, data.getDienThoaiNV());
            db.setParameter(6, data.getEmailNV());
            db.setParameter(7, MaQuyen);
            
            db.executeStorePro();            
            db.closed();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(NhanVienImpl.class.getName()).log(Level.SEVERE, null, ex);
            db.closed();
            return false;
        }
    }

    public ResultSet getAll() {
        String sql = "{call sp_NHANVIEN_getAllDetail()}";
        DatabaseHandle db = new DatabaseHandle(sql, false);
        return db.excuteQuery();
    }

    public ResultSet checkLogin(String userName, String pass) {
        String sql = "{call sp_NHANVIEN_checkLogin(?,?)}";
        DatabaseHandle db = new DatabaseHandle(sql, false);
        try {
            db.setParameter(1, userName);
            db.setParameter(2, pass);
            return db.excuteQuery();
        } catch (SQLException ex) {
            Logger.getLogger(NhanVienImpl.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }        
    }

    public boolean changePass(int MaNV, String oldPass, String newPass) {
        String sql = "{ call sp_NHANVIEN_changePass(?,?,?)}";
        DatabaseHandle db = new DatabaseHandle(sql, true);
        try {
            db.setParameter(1, MaNV);
            db.setParameter(2, oldPass);
            db.setParameter(3, newPass);
            db.executeStorePro();
            db.closed();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(NhanVienImpl.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
    }    
}